package com.crm.business.crm.service;

import com.crm.common.crm.common.CrmModel;
import com.crm.common.crm.entity.BO.CrmPutinMoneySaveBO;
import com.crm.common.crm.entity.BO.CrmRoiSearchBO;
import com.crm.common.crm.entity.BO.CrmUpdateInformationBO;
import com.crm.common.crm.entity.PO.CrmPutinMoney;
import com.crm.common.crm.entity.VO.CrmModelFiledVO;
import com.crm.common.ka.core.entity.BasePage;
import com.crm.business.servlet.BaseService;
import org.springframework.web.bind.annotation.RequestBody;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
import java.util.List;

public interface ICrmPutinAllianceBusinessService extends BaseService<CrmPutinMoney> {
    /**
     * 查询字段配置
     *
     * @param id 主键ID
     * @return data
     */
    public CrmModel queryById(Integer id);

    /**
     * 删除投放金额数据
     *
     * @param ids ids
     */
    public void deleteByIds(List<Integer> ids);

    /**
     * 分页查询
     *
     * @param search
     * @return
     */
    public BasePage<CrmPutinMoney> queryPageList(@RequestBody CrmRoiSearchBO search);

    public List<CrmPutinMoney> queryNewList(CrmPutinMoney crmPutinMoney);

    /**
     * 保存或新增信息
     *
     * @param crmModel model
     */
    public void addOrUpdate(CrmPutinMoneySaveBO crmModel);

    void updateInformation(CrmUpdateInformationBO updateInformationBO);

    public CrmPutinMoney getPutinMoneyById(Integer putinMoneyId);


    public CrmPutinMoney getListPutinMoneyById(Integer putinMoneyId);
    /**
     * 根据投放平台与课程期数查询最小投放日期
     * @param platform 投放平台
     * @param coursePeriods 课程期数
     * @return
     */
    public Date getMinPutinDateByPlatformAndCoursePeriods(String platform, String coursePeriods);

    /**
     * 根据投放平台与课程期数查询最大投放日期
     * @param platform 投放平台
     * @param coursePeriods 课程期数
     * @return
     */
    public Date getMaxPutinDateByPlatformAndCoursePeriods(String platform, String coursePeriods);

    /**
     * 根据投放平台与课程期数查询投放金额数据信息
     * @param platform 投放平台
     * @param coursePeriods 课程期数
     * @return
     */
    public List<CrmPutinMoney> queryPutinMoneyDataByPlatformAndPeriods(String platform, String coursePeriods);

    /**
     * 查询字段配置
     *
     * @param id 主键ID
     * @return data
     */
    public List<CrmModelFiledVO> queryField(Integer id);

    /**
     * 下载导入模板
     *
     * @param response 线索id
     * @throws IOException exception
     */
    public void downloadExcel(HttpServletResponse response) throws IOException;

    /**
     * 导出
     *
     * @param response resp
     * @param search   搜索对象
     */
    public void exportExcel(HttpServletResponse response, CrmRoiSearchBO search);

    /**
     * 查询投放平台
     *
     */
    public List<String> querySource();

    public CrmPutinMoney queryCrmPutinMoneyById(Integer putinMoneyId);

    public void updateCheckStatus(CrmPutinMoney crmPutinMoney);
}
